﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Entities;
using BusinessLogicLayer.Validation;
using DataAccessLayer;

namespace BusinessLogicLayer
{
    public class ChiTietTKBDeNghiManager : IValidation<ChiTietTKBDeNghi>
    {
        private readonly IRepository<ChiTietTKBDeNghi> _repository;

        public ChiTietTKBDeNghiManager(IRepository<ChiTietTKBDeNghi> itr)
        {
            _repository = itr;
        }

        public ValidationResult Validate(ChiTietTKBDeNghi CtTKBDeNghi)
        {
            var toResult = new ValidationResult();
            try
        {
            if (string.IsNullOrEmpty(CtTKBDeNghi.MaLop.ToString().Trim()))
                toResult.Messages.Add("Mã lớp không được để trống");           
            if (string.IsNullOrEmpty(CtTKBDeNghi.MaMH.ToString().Trim()))
                toResult.Messages.Add("Môn học không được để trống");
            if (string.IsNullOrEmpty(CtTKBDeNghi.MaGV.ToString().Trim()))
                toResult.Messages.Add("Mã giáo viên không được để trống");
            //if (string.IsNullOrEmpty(CtTKBDeNghi.MaDN.ToString().Trim()))
            //    toResult.Messages.Add("mã đề nghị không được để trống");
        }
        catch (Exception)
        {

        }
        return toResult;
    }

        public ActionResult InsertOrUpdate(ChiTietTKBDeNghi CtTKBDeNghi)
        {
            var iouResult = new ActionResult();
            try
            {
                if (!_repository.InsertOrUpdate(CtTKBDeNghi))
                    iouResult.ex.Add(new Exception("Thêm Chi tiết TKB Đề Nghị không thành công"));
            }
            catch (Exception e)
            {
                iouResult.ex.Add(e);
            }
            return iouResult;
        }
            public ActionResult Delete(ChiTietTKBDeNghi CtTKBDeNghi)
        {
            var dResult = new ActionResult();
            try
            {
                if (!_repository.Delete(CtTKBDeNghi))
                    dResult.ex.Add(new Exception("Xóa Chi tiết TKB Đề Nghị không thành công!"));
            }
            catch (Exception e)
            {
                dResult.ex.Add(e);
            }
            return dResult;
        }
            public ActionResult Delete(string idGV)
        {
            var dResult = new ActionResult();
            try
            {
                if (!_repository.Delete(id => id.MaTKBDN == idGV))
                    dResult.ex.Add(new Exception("Xóa Chi tiết TKB Đề Nghị không thành công! "));
            }
            catch (Exception e)
            {
                dResult.ex.Add(e);
            }
            return dResult;
        }
            public ActionResultAsList<ChiTietTKBDeNghi> Find(Expression<Func<ChiTietTKBDeNghi, bool>> predicate)
        {
            var fResult = new ActionResultAsList<ChiTietTKBDeNghi>();
            try
            {
                fResult.Result = _repository.Find(predicate).ToList();
                if (fResult.Result.Count == 0)
                    fResult.ex.Add(new Exception("Không tìm thấy TKB Đề Nghị phù hợp"));
            }
            catch (Exception e)
            {
                fResult.ex.Add(e);
            }
            return fResult;
        }
        
    }
}


   

    